home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / web / noweb / src / icon / texdefs.icn < prev    next >
Text File  |  1995-02-24  |  2KB  |  64 lines

  1. #line 2 "texdefs.nw"
  2. procedure main(args)
  3.   go()
  4. end
  5. #line 6 "texdefs.nw"
  6. procedure postpass(name, arg)
  7.   static kind, idchars, definers, newcommand
  8.   initial { kind := "bogus"; idchars := &letters ++ '@' 
  9.             definers := ["def", "newdimen", "newif", "newcount", "newwrite", 
  10.                          "newbox", "global\\def", "long\\def", "gdef" ]
  11.             newcommand := ["newcommand", "renewcommand"]
  12.           }
  13.   case name of {
  14.     "begin" : arg ? kind := tab(upto(' ')|0)
  15.     "text" : if kind == "code" then arg ? {
  16.         if =("\\" || !definers || "\\") then 
  17.             writedefn("\\" || (tab(many(idchars)) | move(1)))
  18.         else if =("\\" || !newcommand || "{") then 
  19.             writedefn(tab(upto('}')))
  20.        }
  21.   }
  22.   return
  23. end
  24.  
  25. procedure prepass(name, arg)
  26.   if name == "end" then writedefn(&null) # force newline
  27. end
  28. #line 1 "defns.nw"
  29. procedure go()
  30.   local line
  31.   while line := read() do {
  32.     apply(prepass, line)
  33.     write(line)
  34.     apply(postpass, line)
  35.   }
  36. end
  37.  
  38. procedure apply(pass, line)
  39.     line ? (="@" & pass(tab(upto(' ')|0),  if =" " then tab(0) else &null))
  40. end
  41. #line 17 "defns.nw"
  42. procedure writedefn(defn, locl)
  43.   static indextext
  44.   initial indextext := ""
  45.   if /defn then
  46.     *indextext > 0 & 
  47. #line 30 "defns.nw"
  48. { # write("@index nl")          # don't!
  49.   indextext := ""
  50. }
  51. #line 22 "defns.nw"
  52.   else {
  53.     if *indextext + *defn > 65 then 
  54. #line 30 "defns.nw"
  55. { # write("@index nl")          # don't!
  56.   indextext := ""
  57. }
  58. #line 24 "defns.nw"
  59.     write(if \locl then "@index localdefn" else "@index defn ", defn)
  60.     indextext ||:= " " || defn
  61.   }
  62.   return
  63. end
  64.